package com.Maykk.Demo04;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/**
 * @ClassName: SendThread
 * @Description: TODO 发送线程
 * @Author: MaykkStar@163.com
 */
public class SendThread implements Runnable {
    @Override
    public void run() {
        // 将发送对象在 try/catch 外实例化用以实现 finally 中的关闭方法
        DatagramSocket ds = null;
        try {
            // 实例化发送对象
            ds = new DatagramSocket();
            // 要发送的字符串定义
            String line;
            while (true) {
                // 输入内容
                System.out.print("我 > ");
                line = new Scanner(System.in).nextLine();
                if ("over".equals(line)) System.exit(0);
                if ("".equals(line)) line = " ";

                // 创建数据包所需参数 -- 特定格式：用户名（线程名）#@@#用户发送的消息
                byte[] data = (Thread.currentThread().getName() + "#@@#" + line).getBytes();
                int length = data.length;
                InetAddress address = InetAddress.getByName("Star");
                int port = 9527;

                // 创建数据包
                DatagramPacket dp = new DatagramPacket(data, length, address, port);

                // 发送数据
                ds.send(dp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭
            ds.close();
        }
    }
}
